// 导入需要的 API 接口
import { getUserInfoAPI } from '@/api/user.js'

// 用户的 vuex 模块，专门用来存储用户的信息
export default {
  // 为模块开启“命名空间”
  namespaced: true,
  // 模块内的 state 必须是函数，return 一个对象
  state() {
    return {
      // 登录成功之后，用户的 token 存到全局
      token: '',
      // 用户的基本信息，将来多个组件都会用到这份数据
      info: {}
    }
  },
  // 函数
  mutations: {
    // 更新全局 token 的值
    updateToken(state, token) {
      state.token = token
    },
    // 形参中的 obj 就是用户的信息
    updateInfo(state, obj) {
      state.info = obj
    }
  },
  // 异步操作
  actions: {
    // 获取用户的基本信息
    async initUser(ctx) {
      // 1. 调用 API 接口，获取用户的信息
      // 2. 把用户的信息，存储到 info 中
      const { data: res } = await getUserInfoAPI()
      if (res.code === 0) {
        // TODO：要把 res.data 对象，赋值给 state 中的 info 对象
        // 在自己的模块内，调用自己的 mutations 函数，不需要用 / 分隔
        ctx.commit('updateInfo', res.data)
      }
    }
  }
}
